[INV-BACKEND-027] Создать метод CreateManualDish()

Реализация оркестратора контура кулинарного цикла

Author

Services Task & Simulation Framework Documentation

Published

July 13, 2026

NoteКраткая карточка задачи

  • Инструкция по шагам:
    1. Принять контракт формы от шлюза. Извлечь строковое поле dish_name, app_lang, space_type и массив продуктов spent_items.
    2. На Шаге 4–5: Выполнить синхронный блокирующий gRPC-вызов checkText к сервису цензуры censorship-control-worker, передав dish_name и app_lang.
    3. На Шаге 5а: Если gRPC-ответ возвращает флаг is_clean == false, мгновенно прекратить обработку, не открывая транзакцию склада, и вернуть шлюзу HTTP-код 422 с реестровой ошибкой о недопустимом содержимом.
    4. На Шаге 5б: Если is_clean == true, инициировать следующий gRPC-шаг к сервису инвентаря fridge-service на метод mutateBalances, передав массив spent_items и контекст локации space_type.
    5. При получении успешного gRPC-ответа от склада вернуть шлюзу статус HTTP 200 OK.
    6. На Шаге 11: В фоновом режиме (после отправки ответа клиенту) сформировать и опубликовать событие в Kafka-топик bpds.inventory.out.meal_item.create с payload: dish_name, total_portions, spent_items, space_type и сквозным x_request_id (case_id).